name: Build and deploy snapshot
on:
  push:
    branches:
      - main
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
jobs:
  build-and-deploy-snapshot:
    if: ${{ github.repository == 'spring-projects/spring-framework' }}
    name: Build and deploy snapshot
    runs-on: ubuntu-latest
    steps:
      - name: Set up Java
        uses: actions/setup-java@v4
        with:
          distribution: 'liberica'
          java-version: 17
      - name: Check out code
        uses: actions/checkout@v4
      - name: Set up Gradle
        uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5
        with:
          cache-read-only: false
      - name: Configure Gradle properties
        shell: bash
        run: |
          mkdir -p $HOME/.gradle
          echo 'systemProp.user.name=spring-builds+github' >> $HOME/.gradle/gradle.properties
          echo 'systemProp.org.gradle.internal.launcher.welcomeMessageEnabled=false' >> $HOME/.gradle/gradle.properties
          echo 'org.gradle.daemon=false' >> $HOME/.gradle/gradle.properties
          echo 'org.gradle.daemon=4' >> $HOME/.gradle/gradle.properties
      - name: Build and publish
        id: build
        env:
          CI: 'true'
          GRADLE_ENTERPRISE_URL: 'https://ge.spring.io'
          DEVELOCITY_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
        run: ./gradlew -PdeploymentRepository=$(pwd)/deployment-repository build publishAllPublicationsToDeploymentRepository
      - name: Deploy
        uses: spring-io/artifactory-deploy-action@v0.0.1
        with:
          uri: 'https://repo.spring.io'
          username: ${{ secrets.ARTIFACTORY_USERNAME }}
          password: ${{ secrets.ARTIFACTORY_PASSWORD }}
          build-name: ${{ format('spring-framework-{0}', github.ref_name)}}
          repository: 'libs-snapshot-local'
          folder: 'deployment-repository'
          signing-key: ${{ secrets.GPG_PRIVATE_KEY }}
          signing-passphrase: ${{ secrets.GPG_PASSPHRASE }}
          artifact-properties: |
            /**/framework-api-*.zip::zip.name=spring-framework,zip.deployed=false
            /**/framework-api-*-docs.zip::zip.type=docs
            /**/framework-api-*-schema.zip::zip.type=schema
      - name: Send notification
        uses: ./.github/actions/send-notification
        if: always()
        with:
          webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
          status: ${{ job.status }}
          build-scan-url: ${{ steps.build.outputs.build-scan-url }}
          run-name: ${{ format('{0} | Linux | Java 17', github.ref_name) }}